package communication;

import java.net.Socket;
import java.util.Iterator;
import java.util.Map;

import server.ServerInternals;
/**
 * Message Client -> Serveur lors de la connection d'un client
 * 
 * @author Julien Roch
 * @version 1.0
 */
public class ClientDisconnect extends ComCliSrv{

	/**
	 * Pour la serialization
	 */
	private static final long serialVersionUID = 3342257854509863414L;

	/**
	 * Supprime le client de la liste des clients et notifie tous les autres clients du changement
	 * 
	 * @param internals Le modele du serveur (contenu dans l'application serveur)
	 */
	public void handleServerInternals(ServerInternals internals) {
		// Supprime le client de la liste
		internals.removeClient(socket);
		// Affiche la nouvelle liste des clients
		Iterator<Map.Entry<Socket, String> > it = internals.getClients().entrySet().iterator();
		System.out.println("Nouvelle table de clients: ");
	    while (it.hasNext()) {
	        Map.Entry<Socket,String> pairs = (Map.Entry<Socket,String>)it.next();
	        System.out.println(pairs.getKey() + "\t\t" + pairs.getValue());
	    }
	    
	    // notification des clients
	    ClientListChanged c = new ClientListChanged(internals.getClients().values().toArray());
	    internals.sendDataToAllClients(c);
	}

}
